package cn.ywsj.ywsjmidtier.entity.DTO;

import cn.ywsj.ywsjmidtier.entity.BaseGroup;
import lombok.Data;
import org.springframework.boot.convert.DataSizeUnit;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @ClassName : ProductDTO
 * @Author : Lenovo
 * @Date: 2021/7/21 14:22
 * @Description :
 */
@Data
public class ProductDTO implements Serializable {
    private static final long serialVersionUID = -9178711365768033345L;

    private Long productId;

    private String productNo;

    private String productType;

    @NotBlank(message = "{com.itonghui.product.productNumeric.null}", groups = {BaseGroup.Insert.class})
    @Size(max = 30, message = "{com.itonghui.product.productNumeric.exceedthirty}", groups = {BaseGroup.Insert.class})
    @Pattern(regexp = "", message = "{com.itonghui.product.productNumeric.noteffect}", groups = {BaseGroup.Insert.class})
    private String productNumeric;

    @NotBlank(message = "{com.itonghui.products.productName.null}", groups = {BaseGroup.Insert.class})
    @Size(max = 30, message = "{com.itonghui.product.productName.exceedsixty}", groups = {BaseGroup.Insert.class})
    private String productName;

    @NotBlank(message = "{com.itonghui.products.productAbstract.null}", groups = {BaseGroup.Insert.class})
    @Size(max = 1000, message = "{com.itonghui.product.productAbstract.exceedthousand}", groups = {BaseGroup.Insert.class})
    private String productAbstract;

    @NotBlank(message = "{com.itonghui.product.className.null}", groups = {BaseGroup.Insert.class})
    @Size(max = 30, message = "{com.itonghui.product.className.exceedthirty}", groups = {BaseGroup.Insert.class})
    private String className;

    private String firstClassName;

    private String secondClassName;

    private String thirdClassName;

    private String fourthClassName;

    private String classId;

    private String productSite;

    private String productSiteCity;

    private String productSiteArea;

    private String productSiteId;

    private String productSiteCityId;

    private String productSiteAreaId;

    private String applicableAddr;

    @NotBlank(message = "{com.itonghui.product.productUnitValue.null}", groups = {BaseGroup.Insert.class})
    @Size(max = 10, message = "{com.itonghui.product.productUnitValue.exceedten}", groups = {BaseGroup.Insert.class})
    private String productUnitValue;

    @NotBlank(message = "{com.itonghui.product.productPrice.null}", groups = {BaseGroup.Insert.class})
    @Pattern(regexp = "^([1-9][\\d]{0,7}|0)(\\.[\\d]{1,2})?$", message = "", groups = {BaseGroup.Insert.class})
    private String productPrice;

    @NotBlank(message = "{com.itonghui.product.moneytype.null}", groups = {BaseGroup.Insert.class})
    @Size(max = 10, message = "{com.itonghui.product.moneytype.exceedten}", groups = {BaseGroup.Insert.class})
    private String moneytype;

    private String rsrvStr1;

    @NotNull(message = "{com.itonghui.product.displayStartDate.null}", groups = {BaseGroup.Insert.class})
    private Date displayStartDate;

    @NotNull(message = "{com.itonghui.product.displayEndDate.null}", groups = {BaseGroup.Insert.class})
    private Date displayEndDate;

    @NotBlank(message = "{com.itonghui.product.num.null}", groups = {BaseGroup.Insert.class})
    @Pattern(regexp = "^[\\-\\+]?((([0-9]{1,3})([,][0-9]{3})*)|([0-9]+))?([\\.]([0-9]+))?$", message = "{com.itonghui.product.num.noteffect}", groups = {BaseGroup.Insert.class})
    private String num;

    @NotBlank(message = "{com.itonghui.product.costPrice.null}", groups = {BaseGroup.Insert.class})
    @Pattern(regexp = "^([1-9][\\d]{0,7}|0)(\\.[\\d]{1,2})?$", message = "", groups = {BaseGroup.Insert.class})
    private String costPrice;

    private String productDesc;

    private String productStyle;

    private String areaId;

    private String keywords;

    private String productUnit;

    private String productPriceDesc;

    private Float highTradePrice;

    private Float lowTradePrice;

    private Integer attachTag;

    private String attachId;

    private Integer display;

    private String productAblit;

    private String miniSupply;

    private Integer salePatter;

    private Integer paymentPatter;

    private String bigImg;

    private String midImg;

    private String smallImg;

    private Integer click;

    private Integer commend;

    private Long commendUserId;

    private String isMallSales;

    private String isMallSalesValue;

    private String mainVideo;

    private String deliveryAreaId;

    private String deliverySite;

    private String deliverySiteCity;

    private String deliverySiteArea;

    private String deliverySiteId;

    private String deliverySiteCityId;

    private String deliverySiteAreaId;

    private String skuUnit;

    private List<Long> warehouseIds;

    private String warehouseName;

    private String levelIdListValue;

    private String groupIdStrValue;

    private String commendValue;

    private String inventoryPromotionValue;

    private String retailPrice;

    private String minWholesaleNum;

    private String wholesalePrice;

    private String commissionType;

    private String commissionTypeValue;

    private String commissionValue;

    private String rebatesTypeValue;

    private String rebatesValue;

    private String freeDeliveryValue;

    private String skuName;

    private String sdValue;

    private Double commissionAmount;

    private Integer rebatesType;

    private Double commissionRate;

    private Double rebatesFee;

    private Double rebatesRate;

    private String attrIds;

    private String skuPrice;

    private String skuCostPrice;

    private String skuNum;

    private String skuNumber;

    private String skuMode;

    private String levelNames;

    private String groupNames;

    private String packagingType;

    private String packagingTypeValue;

    private String packagingNum;

    private String packagingTypeUnitValue;

    private String packagingTypeUnit;

    private List<Long> levelIdList;

    private List<Long> groupIdList;

    private Integer inventoryPromotion;

    private List<Long> skuLevelIdList;

    private List<Long> skuGroupIdList;

    private boolean productCheckFlg;

    private boolean skuCheckFlg;

    private boolean skuValueFlg;

    private boolean skuNameCheckFlg;

    private Date commendTime;

    private Integer hotProduct;

    private Integer goodProduct;

    private String color;

    private String productKey;

    private String productPrivicy;

    private Integer listTop;

    private Date operTime;

    private Date updateTime;

    private Long publishUserId;

    private Date publishDate;

    private Integer validity;

    private Long checkUser;

    private Date checkTime;

    private String backReason;

    private String rsrvStr2;

    private String rsrvStr3;

    private String rsrvStr4;

    private String rsrvStr5;

    private String rsrvStr6;

    private String rsrvStr7;

    private String rsrvStr8;

    private String rsrvStr9;

    private String rsrvStr10;

    private Integer autoState;

    private Integer recommendProduct;

    private Integer activetime;

    private String saleSupport;

    private String standard;

    private String webTag;

    private String brandId;

    private String brandName;

    private Integer productLevel;

    private String url;

    private String attrId;

    private String attrName;

    private String attrValue;

    private String attrTag;

    private String filePath;

    private String levelLogo;

    private String companyAddress;

    private String QQ;

    private String sequence;

    private String price;

    private String custName;

    private String quantity;

    private String attributeValues;

    private Long custId;

    private Long operUser;

    private String planId;

    private String procurementId;

    private String buyerUserId;

    private String sapCompanyCode;

    private Date deliveryTime;

    private String tradingVolume;

    private String sysId;

    private List<String> listId;

    private List<ProductDTO> productVoList;
}
